package ee.ttu.rakarh.services;

import java.util.Map;

import ee.ttu.rakarh.model.data.dao.ItemDAO;
import ee.ttu.rakarh.model.data.dao.ItemDAOImpl;
import ee.ttu.rakarh.model.data.entities.Item;
import ee.ttu.rakarh.model.data.entities.Store;

public class ItemStoreService {
	
	private String error;
	public void updateItemStore (Item item, Store store, int count) {
		Map<Store, Integer> stores = item.getItemStore();
		int was = 0;
		if(stores.get(store) != null){
			was = stores.get(store);
		}
		stores.put(store, was + count);
		item.setItemStore(stores);
		ItemDAO itemDAO = new ItemDAOImpl();
		itemDAO.updateItem(item);
	}
	
	public Boolean cheOutItemStore (Item item, Store store, int count) {
		Map<Store, Integer> stores = item.getItemStore();
		int was = 0;
		if(stores.get(store) == null){
			error =  "No items on source store";
			return false;
		}
		
		was = stores.get(store);
		if(was < count){
			error =  "Not enough on source store";
			return false;
		}
		stores.put(store, was - count);
		item.setItemStore(stores);
		ItemDAO itemDAO = new ItemDAOImpl();
		itemDAO.updateItem(item);
	
		return true;
	}
	
	public Boolean changeItemStore (Item item, Store storeFrom, Store storeTo, int count) {
		Map<Store, Integer> stores = item.getItemStore();
		int wasOnStoreFrom = 0;
		int wasOnStoreTo = 0;
		if(stores.get(storeFrom) == null){
			error =  "No items on source store";
			return false;
		}
		
		wasOnStoreFrom = stores.get(storeFrom);
		if(wasOnStoreFrom < count){
			error =  "Not enough on source store";
			return false;
		}
		
		
		if(stores.get(storeTo) != null){
			wasOnStoreTo = stores.get(storeTo);
		}
		stores.put(storeTo, wasOnStoreTo + count);
		stores.put(storeFrom, wasOnStoreFrom - count);
		item.setItemStore(stores);
		ItemDAO itemDAO = new ItemDAOImpl();
		itemDAO.updateItem(item);
		return true;
	}

	/**
	 * @return the error
	 */
	public String getError() {
		return error;
	}
}
